package Modelo;
import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class SIS_PROCESO_ROLES{
	private double ID_ROLES;
	private double ID_SUB_PROCESO;
	private double INSERTAR;
	private double MODIFICAR;
	private double ELIMINAR;
        private Conexion con = null;
        
	public SIS_PROCESO_ROLES(){}

	public SIS_PROCESO_ROLES(double ID_ROLES,double ID_PROCESO,double INSERTAR,double MODIFICAR,double ELIMINAR){
		this.ID_ROLES =ID_ROLES;
		this.ID_SUB_PROCESO =ID_PROCESO;
		this.INSERTAR =INSERTAR;
		this.MODIFICAR =MODIFICAR;
		this.ELIMINAR =ELIMINAR;
	}

	public boolean Insertar() throws SQLException{
            String consulta = "insert into BROKER.SIS_PROCESO_ROLES(ID_ROLES,ID_SUB_PROCESO,INSERTAR,MODIFICAR,ELIMINAR) VALUES ("+ID_ROLES+","+ID_SUB_PROCESO+","+INSERTAR+","+MODIFICAR+","+ELIMINAR+")";
            con.EjecutarSentencia(consulta);
            return true;
	}
        
	public boolean Desabilitar(double id_rol, double id_proceso) throws SQLException
        {           
            String consulta = "delete from BROKER.SIS_PROCESO_ROLES where ID_ROLES = "+id_rol+" and ID_SUB_PROCESO = "+id_proceso;
            con.EjecutarSentencia(consulta);
            return true;

	}
        
	public boolean Abilitar(double id_rol, double id_proceso) throws SQLException
        {            
            String consulta = "insert into BROKER.SIS_PROCESO_ROLES(ID_ROLES,ID_SUB_PROCESO,INSERTAR,MODIFICAR,ELIMINAR) VALUES ("+id_rol+","+id_proceso+","+1+","+1+","+1+")";
            con.EjecutarSentencia(consulta);
            return true;           
	}
        
        public boolean ModificarInsertar(double VALOR, double id_rol, double id_proceso) throws SQLException
        {            
            String consulta = "update BROKER.SIS_PROCESO_ROLES set insertar = "+VALOR+" where ID_ROLES = "+id_rol+" and ID_SUB_PROCESO = "+id_proceso;
            con.EjecutarSentencia(consulta);
            return true;           
	}
        public boolean ModificarActualizar(double VALOR, double id_rol, double id_proceso) throws SQLException
        {            
            String consulta = "update BROKER.SIS_PROCESO_ROLES set modificar = "+VALOR+" where ID_ROLES = "+id_rol+" and ID_SUB_PROCESO = "+id_proceso;
            con.EjecutarSentencia(consulta);
            return true;            
	}
        public boolean ModificarEliminar(double VALOR, double id_rol, double id_proceso) throws SQLException
        {           
            String consulta = "update BROKER.SIS_PROCESO_ROLES set eliminar = "+VALOR+" where ID_ROLES = "+id_rol+" and ID_SUB_PROCESO = "+id_proceso;
            con.EjecutarSentencia(consulta);
            return true;          
	}
        
        public List<SIS_PROCESO_ROLES> TodosLosActivos(double rol,String text) throws SQLException{
            String consulta = "SELECT r.*\n" +
                            "  FROM BROKER.SIS_SUB_PROCESO, BROKER.SIS_PROCESO_ROLES r\n" +
                            " WHERE (r.ID_SUB_PROCESO = SIS_SUB_PROCESO.ID)\n" +
                            "      AND (r.ID_ROLES = "+rol+")\n" +
                            "      AND upper(SIS_SUB_PROCESO.DESCRIPCION) LIKE upper('%"+text+"%')";
            ResultSet rs = con.EjecutarConsulta(consulta);
            return Cargar(rs);
        }        
        public List<SIS_PROCESO_ROLES> buscarActivos(double rol,String descripcion) throws SQLException{
                String consulta = "select p.ID_ROLES, p.ID_SUB_PROCESO, p.INSERTAR, p.MODIFICAR, p.ELIMINAR from BROKER.SIS_PROCESO_ROLES p , BROKER.SIS_SUB_PROCESO sp where p.ID_SUB_PROCESO=sp.ID and p.ID_ROLES = "+rol+""
                                    + " AND (UPPER (sp.DESCRIPCION) like  UPPER('%"+descripcion+"%'))";
                ResultSet rs = con.EjecutarConsulta(consulta);
                return Cargar(rs);
	}   
         

	public SIS_PROCESO_ROLES BuscarXid(double idrol, double idproceso) throws SQLException{
            String consulta = "select * from BROKER.SIS_PROCESO_ROLES where ID_ROLES = "+idrol+" and ID_SUB_PROCESO="+idproceso;
            ResultSet rs = con.EjecutarConsulta(consulta);
            return Cargar(rs).get(0);
	}

	public List<SIS_PROCESO_ROLES> Todos() throws SQLException{
		String consulta = "select * from BROKER.SIS_PROCESO_ROLES";
                ResultSet rs = con.EjecutarConsulta(consulta);
                return Cargar(rs);
	}

	public List<SIS_PROCESO_ROLES> Cargar(ResultSet rs) throws SQLException
        {		
            List<SIS_PROCESO_ROLES> lista = new ArrayList<SIS_PROCESO_ROLES>();
            while(rs.next()){
                SIS_PROCESO_ROLES objeto = new SIS_PROCESO_ROLES();
                objeto.setID_ROLES(rs.getDouble("ID_ROLES"));
                objeto.setID_PROCESO(rs.getDouble("ID_SUB_PROCESO"));
                objeto.setINSERTAR(rs.getDouble("INSERTAR"));
                objeto.setMODIFICAR(rs.getDouble("MODIFICAR"));
                objeto.setELIMINAR(rs.getDouble("ELIMINAR"));
                objeto.setCon(con);
                lista.add(objeto);
            }
            return lista;
	}

	public double getID_ROLES(){
		return ID_ROLES;
	}
	public void setID_ROLES(double ID_ROLES){
		this.ID_ROLES=ID_ROLES;
	}

	public double getID_PROCESO(){
		return ID_SUB_PROCESO;
	}
	public void setID_PROCESO(double ID_PROCESO){
		this.ID_SUB_PROCESO=ID_PROCESO;
	}

	public double getINSERTAR(){
		return INSERTAR;
	}
	public void setINSERTAR(double INSERTAR){
		this.INSERTAR=INSERTAR;
	}

	public double getMODIFICAR(){
		return MODIFICAR;
	}
	public void setMODIFICAR(double MODIFICAR){
		this.MODIFICAR=MODIFICAR;
	}

	public double getELIMINAR(){
		return ELIMINAR;
	}
	public void setELIMINAR(double ELIMINAR){
		this.ELIMINAR=ELIMINAR;
	}

    public Conexion getCon() {
        return con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }
        
        

}
